home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 April: Mac OS SDK / Dev.CD Apr 99 SDK1.toast / Development Kits / Interfaces&Libraries / Universal / Interfaces / CIncludes / Connections.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-08-17  |  13.1 KB  |  502 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        Connections.h
  3.  
  4.      Contains:    Communications Toolbox Connection Manager Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    Universal Interfaces 3.2
  8.  
  9.      Copyright:    © 1988-1998 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __CONNECTIONS__
  18. #define __CONNECTIONS__
  19.  
  20. #ifndef __CONDITIONALMACROS__
  21. #include <ConditionalMacros.h>
  22. #endif
  23. #ifndef __MACTYPES__
  24. #include <MacTypes.h>
  25. #endif
  26. #ifndef __MIXEDMODE__
  27. #include <MixedMode.h>
  28. #endif
  29. #ifndef __DIALOGS__
  30. #include <Dialogs.h>
  31. #endif
  32.  
  33.  
  34.  
  35. #if PRAGMA_ONCE
  36. #pragma once
  37. #endif
  38.  
  39. #ifdef __cplusplus
  40. extern "C" {
  41. #endif
  42.  
  43. #if PRAGMA_IMPORT
  44. #pragma import on
  45. #endif
  46.  
  47. #if PRAGMA_STRUCT_ALIGN
  48.     #pragma options align=mac68k
  49. #elif PRAGMA_STRUCT_PACKPUSH
  50.     #pragma pack(push, 2)
  51. #elif PRAGMA_STRUCT_PACK
  52.     #pragma pack(2)
  53. #endif
  54.  
  55.  
  56. enum {
  57.     curCMVersion                = 2                                /* current Connection Manager version*/
  58. };
  59.  
  60.  
  61. enum {
  62.     curConnEnvRecVers            = 0                                /*    current Connection Manager Environment Record version*/
  63. };
  64.  
  65.  
  66. enum {
  67.                                                                 /* CMErr */
  68.     cmGenericError                = -1,
  69.     cmNoErr                        = 0,
  70.     cmRejected                    = 1,
  71.     cmFailed                    = 2,
  72.     cmTimeOut                    = 3,
  73.     cmNotOpen                    = 4,
  74.     cmNotClosed                    = 5,
  75.     cmNoRequestPending            = 6,
  76.     cmNotSupported                = 7,
  77.     cmNoTools                    = 8,
  78.     cmUserCancel                = 9,
  79.     cmUnknownError                = 11
  80. };
  81.  
  82. typedef OSErr                             CMErr;
  83.  
  84.  
  85. enum {
  86.     cmData                        = 1L << 0,
  87.     cmCntl                        = 1L << 1,
  88.     cmAttn                        = 1L << 2,
  89.     cmDataNoTimeout                = 1L << 4,
  90.     cmCntlNoTimeout                = 1L << 5,
  91.     cmAttnNoTimeout                = 1L << 6,
  92.     cmDataClean                    = 1L << 8,
  93.     cmCntlClean                    = 1L << 9,
  94.     cmAttnClean                    = 1L << 10,                        /*        Only for CMRecFlags (not CMChannel) in the rest of this enum    */
  95.     cmNoMenus                    = 1L << 16,
  96.     cmQuiet                        = 1L << 17,
  97.     cmConfigChanged                = 1L << 18
  98. };
  99.  
  100. /* CMRecFlags and CMChannel        */
  101. /*        Low word of CMRecFlags is same as CMChannel    */
  102. typedef long                             CMRecFlags;
  103. typedef short                             CMChannel;
  104.  
  105.  
  106.  
  107. enum {
  108.     cmStatusOpening                = 1L << 0,
  109.     cmStatusOpen                = 1L << 1,
  110.     cmStatusClosing                = 1L << 2,
  111.     cmStatusDataAvail            = 1L << 3,
  112.     cmStatusCntlAvail            = 1L << 4,
  113.     cmStatusAttnAvail            = 1L << 5,
  114.     cmStatusDRPend                = 1L << 6,                        /* data read pending    */
  115.     cmStatusDWPend                = 1L << 7,                        /* data write pending    */
  116.     cmStatusCRPend                = 1L << 8,                        /* cntl read pending    */
  117.     cmStatusCWPend                = 1L << 9,                        /* cntl write pending    */
  118.     cmStatusARPend                = 1L << 10,                        /* attn read pending    */
  119.     cmStatusAWPend                = 1L << 11,                        /* attn write pending    */
  120.     cmStatusBreakPend            = 1L << 12,
  121.     cmStatusListenPend            = 1L << 13,
  122.     cmStatusIncomingCallPresent    = 1L << 14,
  123.     cmStatusReserved0            = 1L << 15
  124. };
  125.  
  126. typedef unsigned long                     CMStatFlags;
  127.  
  128. enum {
  129.     cmDataIn                    = 0,
  130.     cmDataOut                    = 1,
  131.     cmCntlIn                    = 2,
  132.     cmCntlOut                    = 3,
  133.     cmAttnIn                    = 4,
  134.     cmAttnOut                    = 5,
  135.     cmRsrvIn                    = 6,
  136.     cmRsrvOut                    = 7
  137. };
  138.  
  139. typedef unsigned short                     CMBufFields;
  140. typedef Ptr                             CMBuffers[8];
  141. typedef long                             CMBufferSizes[8];
  142. typedef const long *                    ConstCMBufferSizesParam;
  143.  
  144. enum {
  145.     cmSearchSevenBit            = 1L << 0
  146. };
  147.  
  148. typedef unsigned short                     CMSearchFlags;
  149.  
  150. enum {
  151.     cmFlagsEOM                    = 1L << 0
  152. };
  153.  
  154. typedef unsigned short                     CMFlags;
  155.  
  156. struct ConnEnvironRec {
  157.     short                             version;
  158.     long                             baudRate;
  159.     short                             dataBits;
  160.     CMChannel                         channels;
  161.     Boolean                         swFlowControl;
  162.     Boolean                         hwFlowControl;
  163.     CMFlags                         flags;
  164. };
  165. typedef struct ConnEnvironRec            ConnEnvironRec;
  166. typedef ConnEnvironRec *                ConnEnvironRecPtr;
  167. typedef struct ConnRecord                 ConnRecord;
  168.  
  169. typedef ConnRecord *                    ConnPtr;
  170. typedef ConnPtr *                        ConnHandle;
  171. typedef CALLBACK_API( long , ConnectionToolDefProcPtr )(ConnHandle hConn, short msg, long p1, long p2, long p3);
  172. typedef CALLBACK_API( void , ConnectionSearchCallBackProcPtr )(ConnHandle hConn, Ptr matchPtr, long refNum);
  173. typedef CALLBACK_API( void , ConnectionCompletionProcPtr )(ConnHandle hConn);
  174. typedef CALLBACK_API( void , ConnectionChooseIdleProcPtr )(void );
  175. typedef STACK_UPP_TYPE(ConnectionToolDefProcPtr)                 ConnectionToolDefUPP;
  176. typedef STACK_UPP_TYPE(ConnectionSearchCallBackProcPtr)         ConnectionSearchCallBackUPP;
  177. typedef STACK_UPP_TYPE(ConnectionCompletionProcPtr)             ConnectionCompletionUPP;
  178. typedef STACK_UPP_TYPE(ConnectionChooseIdleProcPtr)             ConnectionChooseIdleUPP;
  179.  
  180. struct ConnRecord {
  181.     short                             procID;
  182.     CMRecFlags                         flags;
  183.     CMErr                             errCode;
  184.     long                             refCon;
  185.     long                             userData;
  186.     ConnectionToolDefUPP             defProc;
  187.     Ptr                             config;
  188.     Ptr                             oldConfig;
  189.     long                             asyncEOM;
  190.     long                             reserved1;
  191.     long                             reserved2;
  192.     Ptr                             cmPrivate;
  193.     CMBuffers                         bufferArray;
  194.     CMBufferSizes                     bufSizes;
  195.     long                             mluField;
  196.     CMBufferSizes                     asyncCount;
  197. };
  198.  
  199.  
  200. enum {
  201.                                                                 /* CMIOPB constants and structure */
  202.     cmIOPBQType                    = 10,
  203.     cmIOPBversion                = 0
  204. };
  205.  
  206.  
  207. struct CMIOPB {
  208.     QElemPtr                         qLink;
  209.     short                             qType;                        /* cmIOPBQType */
  210.     ConnHandle                         hConn;
  211.     Ptr                             theBuffer;
  212.     long                             count;
  213.     CMFlags                         flags;
  214.     ConnectionCompletionUPP         userCompletion;
  215.     long                             timeout;
  216.     CMErr                             errCode;
  217.     CMChannel                         channel;
  218.     long                             asyncEOM;
  219.     long                             reserved1;
  220.     short                             reserved2;
  221.     short                             version;                    /* cmIOPBversion */
  222.     long                             refCon;                        /* for application */
  223.     long                             toolData1;                    /* for tool */
  224.     long                             toolData2;                    /* for tool */
  225. };
  226. typedef struct CMIOPB                    CMIOPB;
  227. typedef CMIOPB *                        CMIOPBPtr;
  228. enum { uppConnectionToolDefProcInfo = 0x0000FEF0 };             /* pascal 4_bytes Func(4_bytes, 2_bytes, 4_bytes, 4_bytes, 4_bytes) */
  229. enum { uppConnectionSearchCallBackProcInfo = 0x00000FC0 };         /* pascal no_return_value Func(4_bytes, 4_bytes, 4_bytes) */
  230. enum { uppConnectionCompletionProcInfo = 0x000000C0 };             /* pascal no_return_value Func(4_bytes) */
  231. enum { uppConnectionChooseIdleProcInfo = 0x00000000 };             /* pascal no_return_value Func() */
  232. #define CallConnectionToolDefProc(userRoutine, hConn, msg, p1, p2, p3)  CALL_FIVE_PARAMETER_UPP((userRoutine), uppConnectionToolDefProcInfo, (hConn), (msg), (p1), (p2), (p3))
  233. #define CallConnectionSearchCallBackProc(userRoutine, hConn, matchPtr, refNum)  CALL_THREE_PARAMETER_UPP((userRoutine), uppConnectionSearchCallBackProcInfo, (hConn), (matchPtr), (refNum))
  234. #define CallConnectionCompletionProc(userRoutine, hConn)         CALL_ONE_PARAMETER_UPP((userRoutine), uppConnectionCompletionProcInfo, (hConn))
  235. #define CallConnectionChooseIdleProc(userRoutine)                 CALL_ZERO_PARAMETER_UPP((userRoutine), uppConnectionChooseIdleProcInfo)
  236. #define NewConnectionToolDefProc(userRoutine)                     (ConnectionToolDefUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppConnectionToolDefProcInfo, GetCurrentArchitecture())
  237. #define NewConnectionSearchCallBackProc(userRoutine)             (ConnectionSearchCallBackUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppConnectionSearchCallBackProcInfo, GetCurrentArchitecture())
  238. #define NewConnectionCompletionProc(userRoutine)                 (ConnectionCompletionUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppConnectionCompletionProcInfo, GetCurrentArchitecture())
  239. #define NewConnectionChooseIdleProc(userRoutine)                 (ConnectionChooseIdleUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppConnectionChooseIdleProcInfo, GetCurrentArchitecture())
  240.  
  241.  
  242. EXTERN_API( CMErr )
  243. InitCM                            (void);
  244.  
  245. EXTERN_API( Handle )
  246. CMGetVersion                    (ConnHandle             hConn);
  247.  
  248. EXTERN_API( short )
  249. CMGetCMVersion                    (void);
  250.  
  251. EXTERN_API( ConnHandle )
  252. CMNew                            (short                     procID,
  253.                                  CMRecFlags             flags,
  254.                                  ConstCMBufferSizesParam  desiredSizes,
  255.                                  long                     refCon,
  256.                                  long                     userData);
  257.  
  258. EXTERN_API( void )
  259. CMDispose                        (ConnHandle             hConn);
  260.  
  261. EXTERN_API( CMErr )
  262. CMListen                        (ConnHandle             hConn,
  263.                                  Boolean                 async,
  264.                                  ConnectionCompletionUPP  completor,
  265.                                  long                     timeout);
  266.  
  267. EXTERN_API( CMErr )
  268. CMAccept                        (ConnHandle             hConn,
  269.                                  Boolean                 accept);
  270.  
  271. EXTERN_API( CMErr )
  272. CMOpen                            (ConnHandle             hConn,
  273.                                  Boolean                 async,
  274.                                  ConnectionCompletionUPP  completor,
  275.                                  long                     timeout);
  276.  
  277. EXTERN_API( CMErr )
  278. CMClose                            (ConnHandle             hConn,
  279.                                  Boolean                 async,
  280.                                  ConnectionCompletionUPP  completor,
  281.                                  long                     timeout,
  282.                                  Boolean                 now);
  283.  
  284. EXTERN_API( CMErr )
  285. CMAbort                            (ConnHandle             hConn);
  286.  
  287. EXTERN_API( CMErr )
  288. CMStatus                        (ConnHandle             hConn,
  289.                                  CMBufferSizes             sizes,
  290.                                  CMStatFlags *            flags);
  291.  
  292. EXTERN_API( void )
  293. CMIdle                            (ConnHandle             hConn);
  294.  
  295. EXTERN_API( void )
  296. CMReset                            (ConnHandle             hConn);
  297.  
  298. EXTERN_API( void )
  299. CMBreak                            (ConnHandle             hConn,
  300.                                  long                     duration,
  301.                                  Boolean                 async,
  302.                                  ConnectionCompletionUPP  completor);
  303.  
  304. EXTERN_API( CMErr )
  305. CMRead                            (ConnHandle             hConn,
  306.                                  void *                    theBuffer,
  307.                                  long *                    toRead,
  308.                                  CMChannel                 theChannel,
  309.                                  Boolean                 async,
  310.                                  ConnectionCompletionUPP  completor,
  311.                                  long                     timeout,
  312.                                  CMFlags *                flags);
  313.  
  314. EXTERN_API( CMErr )
  315. CMWrite                            (ConnHandle             hConn,
  316.                                  const void *            theBuffer,
  317.                                  long *                    toWrite,
  318.                                  CMChannel                 theChannel,
  319.                                  Boolean                 async,
  320.                                  ConnectionCompletionUPP  completor,
  321.                                  long                     timeout,
  322.                                  CMFlags                 flags);
  323.  
  324. EXTERN_API( CMErr )
  325. CMIOKill                        (ConnHandle             hConn,
  326.                                  short                     which);
  327.  
  328. EXTERN_API( void )
  329. CMActivate                        (ConnHandle             hConn,
  330.                                  Boolean                 activate);
  331.  
  332. EXTERN_API( void )
  333. CMResume                        (ConnHandle             hConn,
  334.                                  Boolean                 resume);
  335.  
  336. EXTERN_API( Boolean )
  337. CMMenu                            (ConnHandle             hConn,
  338.                                  short                     menuID,
  339.                                  short                     item);
  340.  
  341. EXTERN_API( Boolean )
  342. CMValidate                        (ConnHandle             hConn);
  343.  
  344. EXTERN_API( void )
  345. CMDefault                        (Ptr *                    theConfig,
  346.                                  short                     procID,
  347.                                  Boolean                 allocate);
  348.  
  349. EXTERN_API( Handle )
  350. CMSetupPreflight                (short                     procID,
  351.                                  long *                    magicCookie);
  352.  
  353. EXTERN_API( Boolean )
  354. CMSetupFilter                    (short                     procID,
  355.                                  const void *            theConfig,
  356.                                  short                     count,
  357.                                  DialogPtr                 theDialog,
  358.                                  EventRecord *            theEvent,
  359.                                  short *                theItem,
  360.                                  long *                    magicCookie);
  361.  
  362. EXTERN_API( void )
  363. CMSetupSetup                    (short                     procID,
  364.                                  const void *            theConfig,
  365.                                  short                     count,
  366.                                  DialogPtr                 theDialog,
  367.                                  long *                    magicCookie);
  368.  
  369. EXTERN_API( void )
  370. CMSetupItem                        (short                     procID,
  371.                                  const void *            theConfig,
  372.                                  short                     count,
  373.                                  DialogPtr                 theDialog,
  374.                                  short *                theItem,
  375.                                  long *                    magicCookie);
  376.  
  377. EXTERN_API( void )
  378. CMSetupXCleanup                    (short                     procID,
  379.                                  const void *            theConfig,
  380.                                  short                     count,
  381.                                  DialogPtr                 theDialog,
  382.                                  Boolean                 OKed,
  383.                                  long *                    magicCookie);
  384.  
  385. EXTERN_API( void )
  386. CMSetupPostflight                (short                     procID);
  387.  
  388. EXTERN_API( Ptr )
  389. CMGetConfig                        (ConnHandle             hConn);
  390.  
  391. EXTERN_API( short )
  392. CMSetConfig                        (ConnHandle             hConn,
  393.                                  const void *            thePtr);
  394.  
  395. EXTERN_API( OSErr )
  396. CMIntlToEnglish                    (ConnHandle             hConn,
  397.                                  const void *            inputPtr,
  398.                                  Ptr *                    outputPtr,
  399.                                  short                     language);
  400.  
  401. EXTERN_API( OSErr )
  402. CMEnglishToIntl                    (ConnHandle             hConn,
  403.                                  const void *            inputPtr,
  404.                                  Ptr *                    outputPtr,
  405.                                  short                     language);
  406.  
  407. EXTERN_API( long )
  408. CMAddSearch                        (ConnHandle             hConn,
  409.                                  ConstStr255Param         theString,
  410.                                  CMSearchFlags             flags,
  411.                                  ConnectionSearchCallBackUPP  callBack);
  412.  
  413. EXTERN_API( void )
  414. CMRemoveSearch                    (ConnHandle             hConn,
  415.                                  long                     refnum);
  416.  
  417. EXTERN_API( void )
  418. CMClearSearch                    (ConnHandle             hConn);
  419.  
  420. EXTERN_API( CMErr )
  421. CMGetConnEnvirons                (ConnHandle             hConn,
  422.                                  ConnEnvironRec *        theEnvirons);
  423.  
  424. EXTERN_API( short )
  425. CMChoose                        (ConnHandle *            hConn,
  426.                                  Point                     where,
  427.                                  ConnectionChooseIdleUPP  idle);
  428.  
  429. EXTERN_API( void )
  430. CMEvent                            (ConnHandle             hConn,
  431.                                  const EventRecord *    theEvent);
  432.  
  433. EXTERN_API( void )
  434. CMGetToolName                    (short                     procID,
  435.                                  Str255                 name);
  436.  
  437. EXTERN_API( short )
  438. CMGetProcID                        (ConstStr255Param         name);
  439.  
  440. EXTERN_API( void )
  441. CMSetRefCon                        (ConnHandle             hConn,
  442.                                  long                     refCon);
  443.  
  444. EXTERN_API( long )
  445. CMGetRefCon                        (ConnHandle             hConn);
  446.  
  447. EXTERN_API( long )
  448. CMGetUserData                    (ConnHandle             hConn);
  449.  
  450. EXTERN_API( void )
  451. CMSetUserData                    (ConnHandle             hConn,
  452.                                  long                     userData);
  453.  
  454. EXTERN_API( void )
  455. CMGetErrorString                (ConnHandle             hConn,
  456.                                  short                     id,
  457.                                  Str255                 errMsg);
  458.  
  459. EXTERN_API( CMErr )
  460. CMNewIOPB                        (ConnHandle             hConn,
  461.                                  CMIOPBPtr *            theIOPB);
  462.  
  463. EXTERN_API( CMErr )
  464. CMDisposeIOPB                    (ConnHandle             hConn,
  465.                                  CMIOPBPtr                 theIOPB);
  466.  
  467. EXTERN_API( CMErr )
  468. CMPBRead                        (ConnHandle             hConn,
  469.                                  CMIOPBPtr                 theIOPB,
  470.                                  Boolean                 async);
  471.  
  472. EXTERN_API( CMErr )
  473. CMPBWrite                        (ConnHandle             hConn,
  474.                                  CMIOPBPtr                 theIOPB,
  475.                                  Boolean                 async);
  476.  
  477. EXTERN_API( CMErr )
  478. CMPBIOKill                        (ConnHandle             hConn,
  479.                                  CMIOPBPtr                 theIOPB);
  480.  
  481.  
  482. #if PRAGMA_STRUCT_ALIGN
  483.     #pragma options align=reset
  484. #elif PRAGMA_STRUCT_PACKPUSH
  485.     #pragma pack(pop)
  486. #elif PRAGMA_STRUCT_PACK
  487.     #pragma pack()
  488. #endif
  489.  
  490. #ifdef PRAGMA_IMPORT_OFF
  491. #pragma import off
  492. #elif PRAGMA_IMPORT
  493. #pragma import reset
  494. #endif
  495.  
  496. #ifdef __cplusplus
  497. }
  498. #endif
  499.  
  500. #endif /* __CONNECTIONS__ */
  501.  
  502.